[404218]: / Code / Tensor Network vs FC Explainability / Dataset 4 / DS4 3TN TPU kkawchak.ipynb

Download this file

1273 lines (1273 with data), 153.2 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm",
      "gpuType": "V28"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "TPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "import random\n",
        "import time\n",
        "import pandas as pd\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)\n",
        "# Explainability code assistance aided by ChatGPT3.5\n",
        "# 2021 Kelly, D. TensorFlow Explainable AI tutorial https://www.youtube.com/watch?v=6xePkn3-LME"
      ],
      "execution_count": 57,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "0bd15cda-5c1f-44b2-cae9-40f6c60d8bbe",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Start Modified Layers\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     # Finish Modified Layers\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 59,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_5\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_10 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_15 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_16 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_17 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_11 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 19457 (76.00 KB)\n",
            "Trainable params: 19457 (76.00 KB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "# Generate points forming intersecting ellipses\n",
        "theta1 = np.linspace(0, 2*np.pi, 240)  # 480/2 = 240 points for each ellipse\n",
        "theta2 = np.linspace(0, 2*np.pi, 240)\n",
        "\n",
        "a1, b1 = 2, 1  # Parameters for ellipse 1\n",
        "a2, b2 = 1, 2  # Parameters for ellipse 2\n",
        "\n",
        "x1 = a1 * np.cos(theta1)\n",
        "y1 = b1 * np.sin(theta1)\n",
        "\n",
        "x2 = a2 * np.cos(theta2)\n",
        "y2 = b2 * np.sin(theta2)\n",
        "\n",
        "X = np.concatenate([np.column_stack((x1, y1)), np.column_stack((x2, y2))])\n",
        "Y = np.concatenate([np.ones((240)), -np.ones((240))])"
      ],
      "execution_count": 60,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "4f38d8b2-2f1d-461d-80cb-f746d2bcf356"
      },
      "execution_count": 61,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712718083.2442913\n",
            "Wed Apr 10 03:01:23 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "f36f1266-f804-4979-b160-f06405875218",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 62,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "15/15 - 2s - loss: 1.0019 - 2s/epoch - 114ms/step\n",
            "Epoch 2/300\n",
            "15/15 - 0s - loss: 1.0001 - 63ms/epoch - 4ms/step\n",
            "Epoch 3/300\n",
            "15/15 - 0s - loss: 1.0003 - 65ms/epoch - 4ms/step\n",
            "Epoch 4/300\n",
            "15/15 - 0s - loss: 1.0002 - 67ms/epoch - 4ms/step\n",
            "Epoch 5/300\n",
            "15/15 - 0s - loss: 0.9997 - 64ms/epoch - 4ms/step\n",
            "Epoch 6/300\n",
            "15/15 - 0s - loss: 0.9435 - 66ms/epoch - 4ms/step\n",
            "Epoch 7/300\n",
            "15/15 - 0s - loss: 0.7474 - 65ms/epoch - 4ms/step\n",
            "Epoch 8/300\n",
            "15/15 - 0s - loss: 0.7051 - 63ms/epoch - 4ms/step\n",
            "Epoch 9/300\n",
            "15/15 - 0s - loss: 0.6548 - 58ms/epoch - 4ms/step\n",
            "Epoch 10/300\n",
            "15/15 - 0s - loss: 0.6219 - 67ms/epoch - 4ms/step\n",
            "Epoch 11/300\n",
            "15/15 - 0s - loss: 0.5986 - 64ms/epoch - 4ms/step\n",
            "Epoch 12/300\n",
            "15/15 - 0s - loss: 0.5685 - 62ms/epoch - 4ms/step\n",
            "Epoch 13/300\n",
            "15/15 - 0s - loss: 0.5339 - 59ms/epoch - 4ms/step\n",
            "Epoch 14/300\n",
            "15/15 - 0s - loss: 0.5087 - 58ms/epoch - 4ms/step\n",
            "Epoch 15/300\n",
            "15/15 - 0s - loss: 0.5085 - 61ms/epoch - 4ms/step\n",
            "Epoch 16/300\n",
            "15/15 - 0s - loss: 0.4789 - 58ms/epoch - 4ms/step\n",
            "Epoch 17/300\n",
            "15/15 - 0s - loss: 0.4605 - 58ms/epoch - 4ms/step\n",
            "Epoch 18/300\n",
            "15/15 - 0s - loss: 0.4225 - 61ms/epoch - 4ms/step\n",
            "Epoch 19/300\n",
            "15/15 - 0s - loss: 0.3890 - 60ms/epoch - 4ms/step\n",
            "Epoch 20/300\n",
            "15/15 - 0s - loss: 0.3740 - 65ms/epoch - 4ms/step\n",
            "Epoch 21/300\n",
            "15/15 - 0s - loss: 0.3388 - 61ms/epoch - 4ms/step\n",
            "Epoch 22/300\n",
            "15/15 - 0s - loss: 0.3407 - 62ms/epoch - 4ms/step\n",
            "Epoch 23/300\n",
            "15/15 - 0s - loss: 0.3135 - 59ms/epoch - 4ms/step\n",
            "Epoch 24/300\n",
            "15/15 - 0s - loss: 0.3254 - 61ms/epoch - 4ms/step\n",
            "Epoch 25/300\n",
            "15/15 - 0s - loss: 0.2601 - 60ms/epoch - 4ms/step\n",
            "Epoch 26/300\n",
            "15/15 - 0s - loss: 0.2951 - 59ms/epoch - 4ms/step\n",
            "Epoch 27/300\n",
            "15/15 - 0s - loss: 0.3062 - 58ms/epoch - 4ms/step\n",
            "Epoch 28/300\n",
            "15/15 - 0s - loss: 0.2509 - 61ms/epoch - 4ms/step\n",
            "Epoch 29/300\n",
            "15/15 - 0s - loss: 0.2135 - 62ms/epoch - 4ms/step\n",
            "Epoch 30/300\n",
            "15/15 - 0s - loss: 0.2068 - 60ms/epoch - 4ms/step\n",
            "Epoch 31/300\n",
            "15/15 - 0s - loss: 0.1918 - 63ms/epoch - 4ms/step\n",
            "Epoch 32/300\n",
            "15/15 - 0s - loss: 0.1711 - 59ms/epoch - 4ms/step\n",
            "Epoch 33/300\n",
            "15/15 - 0s - loss: 0.2250 - 61ms/epoch - 4ms/step\n",
            "Epoch 34/300\n",
            "15/15 - 0s - loss: 0.1951 - 61ms/epoch - 4ms/step\n",
            "Epoch 35/300\n",
            "15/15 - 0s - loss: 0.1443 - 58ms/epoch - 4ms/step\n",
            "Epoch 36/300\n",
            "15/15 - 0s - loss: 0.1159 - 55ms/epoch - 4ms/step\n",
            "Epoch 37/300\n",
            "15/15 - 0s - loss: 0.0947 - 60ms/epoch - 4ms/step\n",
            "Epoch 38/300\n",
            "15/15 - 0s - loss: 0.1139 - 59ms/epoch - 4ms/step\n",
            "Epoch 39/300\n",
            "15/15 - 0s - loss: 0.1047 - 59ms/epoch - 4ms/step\n",
            "Epoch 40/300\n",
            "15/15 - 0s - loss: 0.1129 - 59ms/epoch - 4ms/step\n",
            "Epoch 41/300\n",
            "15/15 - 0s - loss: 0.0884 - 60ms/epoch - 4ms/step\n",
            "Epoch 42/300\n",
            "15/15 - 0s - loss: 0.0764 - 63ms/epoch - 4ms/step\n",
            "Epoch 43/300\n",
            "15/15 - 0s - loss: 0.0843 - 60ms/epoch - 4ms/step\n",
            "Epoch 44/300\n",
            "15/15 - 0s - loss: 0.0807 - 60ms/epoch - 4ms/step\n",
            "Epoch 45/300\n",
            "15/15 - 0s - loss: 0.0783 - 59ms/epoch - 4ms/step\n",
            "Epoch 46/300\n",
            "15/15 - 0s - loss: 0.0823 - 58ms/epoch - 4ms/step\n",
            "Epoch 47/300\n",
            "15/15 - 0s - loss: 0.0757 - 57ms/epoch - 4ms/step\n",
            "Epoch 48/300\n",
            "15/15 - 0s - loss: 0.0779 - 58ms/epoch - 4ms/step\n",
            "Epoch 49/300\n",
            "15/15 - 0s - loss: 0.0674 - 58ms/epoch - 4ms/step\n",
            "Epoch 50/300\n",
            "15/15 - 0s - loss: 0.0608 - 60ms/epoch - 4ms/step\n",
            "Epoch 51/300\n",
            "15/15 - 0s - loss: 0.0995 - 59ms/epoch - 4ms/step\n",
            "Epoch 52/300\n",
            "15/15 - 0s - loss: 0.0682 - 61ms/epoch - 4ms/step\n",
            "Epoch 53/300\n",
            "15/15 - 0s - loss: 0.0812 - 60ms/epoch - 4ms/step\n",
            "Epoch 54/300\n",
            "15/15 - 0s - loss: 0.0832 - 59ms/epoch - 4ms/step\n",
            "Epoch 55/300\n",
            "15/15 - 0s - loss: 0.0557 - 61ms/epoch - 4ms/step\n",
            "Epoch 56/300\n",
            "15/15 - 0s - loss: 0.0538 - 61ms/epoch - 4ms/step\n",
            "Epoch 57/300\n",
            "15/15 - 0s - loss: 0.0556 - 60ms/epoch - 4ms/step\n",
            "Epoch 58/300\n",
            "15/15 - 0s - loss: 0.0639 - 60ms/epoch - 4ms/step\n",
            "Epoch 59/300\n",
            "15/15 - 0s - loss: 0.0672 - 61ms/epoch - 4ms/step\n",
            "Epoch 60/300\n",
            "15/15 - 0s - loss: 0.1071 - 59ms/epoch - 4ms/step\n",
            "Epoch 61/300\n",
            "15/15 - 0s - loss: 0.0802 - 58ms/epoch - 4ms/step\n",
            "Epoch 62/300\n",
            "15/15 - 0s - loss: 0.0831 - 61ms/epoch - 4ms/step\n",
            "Epoch 63/300\n",
            "15/15 - 0s - loss: 0.0719 - 61ms/epoch - 4ms/step\n",
            "Epoch 64/300\n",
            "15/15 - 0s - loss: 0.0632 - 59ms/epoch - 4ms/step\n",
            "Epoch 65/300\n",
            "15/15 - 0s - loss: 0.0662 - 61ms/epoch - 4ms/step\n",
            "Epoch 66/300\n",
            "15/15 - 0s - loss: 0.0665 - 63ms/epoch - 4ms/step\n",
            "Epoch 67/300\n",
            "15/15 - 0s - loss: 0.1031 - 60ms/epoch - 4ms/step\n",
            "Epoch 68/300\n",
            "15/15 - 0s - loss: 0.0985 - 59ms/epoch - 4ms/step\n",
            "Epoch 69/300\n",
            "15/15 - 0s - loss: 0.0925 - 61ms/epoch - 4ms/step\n",
            "Epoch 70/300\n",
            "15/15 - 0s - loss: 0.1167 - 61ms/epoch - 4ms/step\n",
            "Epoch 71/300\n",
            "15/15 - 0s - loss: 0.0989 - 62ms/epoch - 4ms/step\n",
            "Epoch 72/300\n",
            "15/15 - 0s - loss: 0.1178 - 62ms/epoch - 4ms/step\n",
            "Epoch 73/300\n",
            "15/15 - 0s - loss: 0.0815 - 62ms/epoch - 4ms/step\n",
            "Epoch 74/300\n",
            "15/15 - 0s - loss: 0.0799 - 64ms/epoch - 4ms/step\n",
            "Epoch 75/300\n",
            "15/15 - 0s - loss: 0.0936 - 63ms/epoch - 4ms/step\n",
            "Epoch 76/300\n",
            "15/15 - 0s - loss: 0.1369 - 62ms/epoch - 4ms/step\n",
            "Epoch 77/300\n",
            "15/15 - 0s - loss: 0.0931 - 61ms/epoch - 4ms/step\n",
            "Epoch 78/300\n",
            "15/15 - 0s - loss: 0.0878 - 60ms/epoch - 4ms/step\n",
            "Epoch 79/300\n",
            "15/15 - 0s - loss: 0.0887 - 63ms/epoch - 4ms/step\n",
            "Epoch 80/300\n",
            "15/15 - 0s - loss: 0.1107 - 63ms/epoch - 4ms/step\n",
            "Epoch 81/300\n",
            "15/15 - 0s - loss: 0.1097 - 64ms/epoch - 4ms/step\n",
            "Epoch 82/300\n",
            "15/15 - 0s - loss: 0.1118 - 63ms/epoch - 4ms/step\n",
            "Epoch 83/300\n",
            "15/15 - 0s - loss: 0.0804 - 64ms/epoch - 4ms/step\n",
            "Epoch 84/300\n",
            "15/15 - 0s - loss: 0.0548 - 62ms/epoch - 4ms/step\n",
            "Epoch 85/300\n",
            "15/15 - 0s - loss: 0.0571 - 62ms/epoch - 4ms/step\n",
            "Epoch 86/300\n",
            "15/15 - 0s - loss: 0.0519 - 61ms/epoch - 4ms/step\n",
            "Epoch 87/300\n",
            "15/15 - 0s - loss: 0.0540 - 62ms/epoch - 4ms/step\n",
            "Epoch 88/300\n",
            "15/15 - 0s - loss: 0.0634 - 64ms/epoch - 4ms/step\n",
            "Epoch 89/300\n",
            "15/15 - 0s - loss: 0.0461 - 64ms/epoch - 4ms/step\n",
            "Epoch 90/300\n",
            "15/15 - 0s - loss: 0.0539 - 62ms/epoch - 4ms/step\n",
            "Epoch 91/300\n",
            "15/15 - 0s - loss: 0.0476 - 63ms/epoch - 4ms/step\n",
            "Epoch 92/300\n",
            "15/15 - 0s - loss: 0.0730 - 65ms/epoch - 4ms/step\n",
            "Epoch 93/300\n",
            "15/15 - 0s - loss: 0.1018 - 62ms/epoch - 4ms/step\n",
            "Epoch 94/300\n",
            "15/15 - 0s - loss: 0.1689 - 62ms/epoch - 4ms/step\n",
            "Epoch 95/300\n",
            "15/15 - 0s - loss: 0.0825 - 63ms/epoch - 4ms/step\n",
            "Epoch 96/300\n",
            "15/15 - 0s - loss: 0.0601 - 62ms/epoch - 4ms/step\n",
            "Epoch 97/300\n",
            "15/15 - 0s - loss: 0.0479 - 60ms/epoch - 4ms/step\n",
            "Epoch 98/300\n",
            "15/15 - 0s - loss: 0.0444 - 63ms/epoch - 4ms/step\n",
            "Epoch 99/300\n",
            "15/15 - 0s - loss: 0.0381 - 63ms/epoch - 4ms/step\n",
            "Epoch 100/300\n",
            "15/15 - 0s - loss: 0.0478 - 63ms/epoch - 4ms/step\n",
            "Epoch 101/300\n",
            "15/15 - 0s - loss: 0.0419 - 63ms/epoch - 4ms/step\n",
            "Epoch 102/300\n",
            "15/15 - 0s - loss: 0.0707 - 63ms/epoch - 4ms/step\n",
            "Epoch 103/300\n",
            "15/15 - 0s - loss: 0.0761 - 63ms/epoch - 4ms/step\n",
            "Epoch 104/300\n",
            "15/15 - 0s - loss: 0.0747 - 61ms/epoch - 4ms/step\n",
            "Epoch 105/300\n",
            "15/15 - 0s - loss: 0.1031 - 65ms/epoch - 4ms/step\n",
            "Epoch 106/300\n",
            "15/15 - 0s - loss: 0.0672 - 63ms/epoch - 4ms/step\n",
            "Epoch 107/300\n",
            "15/15 - 0s - loss: 0.0514 - 65ms/epoch - 4ms/step\n",
            "Epoch 108/300\n",
            "15/15 - 0s - loss: 0.0457 - 66ms/epoch - 4ms/step\n",
            "Epoch 109/300\n",
            "15/15 - 0s - loss: 0.0492 - 63ms/epoch - 4ms/step\n",
            "Epoch 110/300\n",
            "15/15 - 0s - loss: 0.0595 - 62ms/epoch - 4ms/step\n",
            "Epoch 111/300\n",
            "15/15 - 0s - loss: 0.0713 - 61ms/epoch - 4ms/step\n",
            "Epoch 112/300\n",
            "15/15 - 0s - loss: 0.0602 - 63ms/epoch - 4ms/step\n",
            "Epoch 113/300\n",
            "15/15 - 0s - loss: 0.0603 - 63ms/epoch - 4ms/step\n",
            "Epoch 114/300\n",
            "15/15 - 0s - loss: 0.1035 - 62ms/epoch - 4ms/step\n",
            "Epoch 115/300\n",
            "15/15 - 0s - loss: 0.0882 - 62ms/epoch - 4ms/step\n",
            "Epoch 116/300\n",
            "15/15 - 0s - loss: 0.0719 - 61ms/epoch - 4ms/step\n",
            "Epoch 117/300\n",
            "15/15 - 0s - loss: 0.0625 - 63ms/epoch - 4ms/step\n",
            "Epoch 118/300\n",
            "15/15 - 0s - loss: 0.0629 - 64ms/epoch - 4ms/step\n",
            "Epoch 119/300\n",
            "15/15 - 0s - loss: 0.0525 - 65ms/epoch - 4ms/step\n",
            "Epoch 120/300\n",
            "15/15 - 0s - loss: 0.0469 - 65ms/epoch - 4ms/step\n",
            "Epoch 121/300\n",
            "15/15 - 0s - loss: 0.0519 - 63ms/epoch - 4ms/step\n",
            "Epoch 122/300\n",
            "15/15 - 0s - loss: 0.0491 - 61ms/epoch - 4ms/step\n",
            "Epoch 123/300\n",
            "15/15 - 0s - loss: 0.0678 - 60ms/epoch - 4ms/step\n",
            "Epoch 124/300\n",
            "15/15 - 0s - loss: 0.0828 - 64ms/epoch - 4ms/step\n",
            "Epoch 125/300\n",
            "15/15 - 0s - loss: 0.1034 - 63ms/epoch - 4ms/step\n",
            "Epoch 126/300\n",
            "15/15 - 0s - loss: 0.0871 - 64ms/epoch - 4ms/step\n",
            "Epoch 127/300\n",
            "15/15 - 0s - loss: 0.0695 - 63ms/epoch - 4ms/step\n",
            "Epoch 128/300\n",
            "15/15 - 0s - loss: 0.0732 - 61ms/epoch - 4ms/step\n",
            "Epoch 129/300\n",
            "15/15 - 0s - loss: 0.0551 - 62ms/epoch - 4ms/step\n",
            "Epoch 130/300\n",
            "15/15 - 0s - loss: 0.0440 - 64ms/epoch - 4ms/step\n",
            "Epoch 131/300\n",
            "15/15 - 0s - loss: 0.0820 - 64ms/epoch - 4ms/step\n",
            "Epoch 132/300\n",
            "15/15 - 0s - loss: 0.0557 - 61ms/epoch - 4ms/step\n",
            "Epoch 133/300\n",
            "15/15 - 0s - loss: 0.0362 - 65ms/epoch - 4ms/step\n",
            "Epoch 134/300\n",
            "15/15 - 0s - loss: 0.0536 - 60ms/epoch - 4ms/step\n",
            "Epoch 135/300\n",
            "15/15 - 0s - loss: 0.0444 - 59ms/epoch - 4ms/step\n",
            "Epoch 136/300\n",
            "15/15 - 0s - loss: 0.0423 - 62ms/epoch - 4ms/step\n",
            "Epoch 137/300\n",
            "15/15 - 0s - loss: 0.0393 - 64ms/epoch - 4ms/step\n",
            "Epoch 138/300\n",
            "15/15 - 0s - loss: 0.0741 - 63ms/epoch - 4ms/step\n",
            "Epoch 139/300\n",
            "15/15 - 0s - loss: 0.0754 - 65ms/epoch - 4ms/step\n",
            "Epoch 140/300\n",
            "15/15 - 0s - loss: 0.0488 - 62ms/epoch - 4ms/step\n",
            "Epoch 141/300\n",
            "15/15 - 0s - loss: 0.0646 - 63ms/epoch - 4ms/step\n",
            "Epoch 142/300\n",
            "15/15 - 0s - loss: 0.0717 - 61ms/epoch - 4ms/step\n",
            "Epoch 143/300\n",
            "15/15 - 0s - loss: 0.0996 - 62ms/epoch - 4ms/step\n",
            "Epoch 144/300\n",
            "15/15 - 0s - loss: 0.0570 - 64ms/epoch - 4ms/step\n",
            "Epoch 145/300\n",
            "15/15 - 0s - loss: 0.0732 - 63ms/epoch - 4ms/step\n",
            "Epoch 146/300\n",
            "15/15 - 0s - loss: 0.1161 - 63ms/epoch - 4ms/step\n",
            "Epoch 147/300\n",
            "15/15 - 0s - loss: 0.0653 - 64ms/epoch - 4ms/step\n",
            "Epoch 148/300\n",
            "15/15 - 0s - loss: 0.0508 - 61ms/epoch - 4ms/step\n",
            "Epoch 149/300\n",
            "15/15 - 0s - loss: 0.0404 - 62ms/epoch - 4ms/step\n",
            "Epoch 150/300\n",
            "15/15 - 0s - loss: 0.0493 - 59ms/epoch - 4ms/step\n",
            "Epoch 151/300\n",
            "15/15 - 0s - loss: 0.0465 - 59ms/epoch - 4ms/step\n",
            "Epoch 152/300\n",
            "15/15 - 0s - loss: 0.0735 - 63ms/epoch - 4ms/step\n",
            "Epoch 153/300\n",
            "15/15 - 0s - loss: 0.0595 - 62ms/epoch - 4ms/step\n",
            "Epoch 154/300\n",
            "15/15 - 0s - loss: 0.0548 - 63ms/epoch - 4ms/step\n",
            "Epoch 155/300\n",
            "15/15 - 0s - loss: 0.0670 - 62ms/epoch - 4ms/step\n",
            "Epoch 156/300\n",
            "15/15 - 0s - loss: 0.0582 - 59ms/epoch - 4ms/step\n",
            "Epoch 157/300\n",
            "15/15 - 0s - loss: 0.0414 - 61ms/epoch - 4ms/step\n",
            "Epoch 158/300\n",
            "15/15 - 0s - loss: 0.0370 - 65ms/epoch - 4ms/step\n",
            "Epoch 159/300\n",
            "15/15 - 0s - loss: 0.0450 - 63ms/epoch - 4ms/step\n",
            "Epoch 160/300\n",
            "15/15 - 0s - loss: 0.0637 - 64ms/epoch - 4ms/step\n",
            "Epoch 161/300\n",
            "15/15 - 0s - loss: 0.0726 - 63ms/epoch - 4ms/step\n",
            "Epoch 162/300\n",
            "15/15 - 0s - loss: 0.0796 - 61ms/epoch - 4ms/step\n",
            "Epoch 163/300\n",
            "15/15 - 0s - loss: 0.0795 - 65ms/epoch - 4ms/step\n",
            "Epoch 164/300\n",
            "15/15 - 0s - loss: 0.0672 - 61ms/epoch - 4ms/step\n",
            "Epoch 165/300\n",
            "15/15 - 0s - loss: 0.0499 - 63ms/epoch - 4ms/step\n",
            "Epoch 166/300\n",
            "15/15 - 0s - loss: 0.0375 - 62ms/epoch - 4ms/step\n",
            "Epoch 167/300\n",
            "15/15 - 0s - loss: 0.0386 - 64ms/epoch - 4ms/step\n",
            "Epoch 168/300\n",
            "15/15 - 0s - loss: 0.0622 - 62ms/epoch - 4ms/step\n",
            "Epoch 169/300\n",
            "15/15 - 0s - loss: 0.0419 - 64ms/epoch - 4ms/step\n",
            "Epoch 170/300\n",
            "15/15 - 0s - loss: 0.0561 - 62ms/epoch - 4ms/step\n",
            "Epoch 171/300\n",
            "15/15 - 0s - loss: 0.0710 - 59ms/epoch - 4ms/step\n",
            "Epoch 172/300\n",
            "15/15 - 0s - loss: 0.0567 - 62ms/epoch - 4ms/step\n",
            "Epoch 173/300\n",
            "15/15 - 0s - loss: 0.0440 - 60ms/epoch - 4ms/step\n",
            "Epoch 174/300\n",
            "15/15 - 0s - loss: 0.0588 - 58ms/epoch - 4ms/step\n",
            "Epoch 175/300\n",
            "15/15 - 0s - loss: 0.0551 - 60ms/epoch - 4ms/step\n",
            "Epoch 176/300\n",
            "15/15 - 0s - loss: 0.0750 - 59ms/epoch - 4ms/step\n",
            "Epoch 177/300\n",
            "15/15 - 0s - loss: 0.0712 - 62ms/epoch - 4ms/step\n",
            "Epoch 178/300\n",
            "15/15 - 0s - loss: 0.0613 - 64ms/epoch - 4ms/step\n",
            "Epoch 179/300\n",
            "15/15 - 0s - loss: 0.0489 - 62ms/epoch - 4ms/step\n",
            "Epoch 180/300\n",
            "15/15 - 0s - loss: 0.0552 - 63ms/epoch - 4ms/step\n",
            "Epoch 181/300\n",
            "15/15 - 0s - loss: 0.0543 - 62ms/epoch - 4ms/step\n",
            "Epoch 182/300\n",
            "15/15 - 0s - loss: 0.0467 - 61ms/epoch - 4ms/step\n",
            "Epoch 183/300\n",
            "15/15 - 0s - loss: 0.0362 - 61ms/epoch - 4ms/step\n",
            "Epoch 184/300\n",
            "15/15 - 0s - loss: 0.0341 - 62ms/epoch - 4ms/step\n",
            "Epoch 185/300\n",
            "15/15 - 0s - loss: 0.0313 - 58ms/epoch - 4ms/step\n",
            "Epoch 186/300\n",
            "15/15 - 0s - loss: 0.0437 - 60ms/epoch - 4ms/step\n",
            "Epoch 187/300\n",
            "15/15 - 0s - loss: 0.1530 - 59ms/epoch - 4ms/step\n",
            "Epoch 188/300\n",
            "15/15 - 0s - loss: 0.0893 - 59ms/epoch - 4ms/step\n",
            "Epoch 189/300\n",
            "15/15 - 0s - loss: 0.0578 - 57ms/epoch - 4ms/step\n",
            "Epoch 190/300\n",
            "15/15 - 0s - loss: 0.0411 - 58ms/epoch - 4ms/step\n",
            "Epoch 191/300\n",
            "15/15 - 0s - loss: 0.0356 - 62ms/epoch - 4ms/step\n",
            "Epoch 192/300\n",
            "15/15 - 0s - loss: 0.0387 - 66ms/epoch - 4ms/step\n",
            "Epoch 193/300\n",
            "15/15 - 0s - loss: 0.0373 - 69ms/epoch - 5ms/step\n",
            "Epoch 194/300\n",
            "15/15 - 0s - loss: 0.0399 - 66ms/epoch - 4ms/step\n",
            "Epoch 195/300\n",
            "15/15 - 0s - loss: 0.0343 - 71ms/epoch - 5ms/step\n",
            "Epoch 196/300\n",
            "15/15 - 0s - loss: 0.0588 - 68ms/epoch - 5ms/step\n",
            "Epoch 197/300\n",
            "15/15 - 0s - loss: 0.0615 - 67ms/epoch - 4ms/step\n",
            "Epoch 198/300\n",
            "15/15 - 0s - loss: 0.0900 - 64ms/epoch - 4ms/step\n",
            "Epoch 199/300\n",
            "15/15 - 0s - loss: 0.0859 - 71ms/epoch - 5ms/step\n",
            "Epoch 200/300\n",
            "15/15 - 0s - loss: 0.0833 - 66ms/epoch - 4ms/step\n",
            "Epoch 201/300\n",
            "15/15 - 0s - loss: 0.0576 - 69ms/epoch - 5ms/step\n",
            "Epoch 202/300\n",
            "15/15 - 0s - loss: 0.0757 - 69ms/epoch - 5ms/step\n",
            "Epoch 203/300\n",
            "15/15 - 0s - loss: 0.0729 - 72ms/epoch - 5ms/step\n",
            "Epoch 204/300\n",
            "15/15 - 0s - loss: 0.0470 - 65ms/epoch - 4ms/step\n",
            "Epoch 205/300\n",
            "15/15 - 0s - loss: 0.0670 - 71ms/epoch - 5ms/step\n",
            "Epoch 206/300\n",
            "15/15 - 0s - loss: 0.0490 - 70ms/epoch - 5ms/step\n",
            "Epoch 207/300\n",
            "15/15 - 0s - loss: 0.0533 - 71ms/epoch - 5ms/step\n",
            "Epoch 208/300\n",
            "15/15 - 0s - loss: 0.0564 - 70ms/epoch - 5ms/step\n",
            "Epoch 209/300\n",
            "15/15 - 0s - loss: 0.0619 - 67ms/epoch - 4ms/step\n",
            "Epoch 210/300\n",
            "15/15 - 0s - loss: 0.0779 - 68ms/epoch - 5ms/step\n",
            "Epoch 211/300\n",
            "15/15 - 0s - loss: 0.0667 - 68ms/epoch - 5ms/step\n",
            "Epoch 212/300\n",
            "15/15 - 0s - loss: 0.0513 - 71ms/epoch - 5ms/step\n",
            "Epoch 213/300\n",
            "15/15 - 0s - loss: 0.0475 - 71ms/epoch - 5ms/step\n",
            "Epoch 214/300\n",
            "15/15 - 0s - loss: 0.0554 - 69ms/epoch - 5ms/step\n",
            "Epoch 215/300\n",
            "15/15 - 0s - loss: 0.0447 - 72ms/epoch - 5ms/step\n",
            "Epoch 216/300\n",
            "15/15 - 0s - loss: 0.0379 - 73ms/epoch - 5ms/step\n",
            "Epoch 217/300\n",
            "15/15 - 0s - loss: 0.0461 - 72ms/epoch - 5ms/step\n",
            "Epoch 218/300\n",
            "15/15 - 0s - loss: 0.0400 - 67ms/epoch - 4ms/step\n",
            "Epoch 219/300\n",
            "15/15 - 0s - loss: 0.0631 - 64ms/epoch - 4ms/step\n",
            "Epoch 220/300\n",
            "15/15 - 0s - loss: 0.0693 - 71ms/epoch - 5ms/step\n",
            "Epoch 221/300\n",
            "15/15 - 0s - loss: 0.0605 - 70ms/epoch - 5ms/step\n",
            "Epoch 222/300\n",
            "15/15 - 0s - loss: 0.0693 - 64ms/epoch - 4ms/step\n",
            "Epoch 223/300\n",
            "15/15 - 0s - loss: 0.0579 - 70ms/epoch - 5ms/step\n",
            "Epoch 224/300\n",
            "15/15 - 0s - loss: 0.0398 - 69ms/epoch - 5ms/step\n",
            "Epoch 225/300\n",
            "15/15 - 0s - loss: 0.0342 - 68ms/epoch - 5ms/step\n",
            "Epoch 226/300\n",
            "15/15 - 0s - loss: 0.0343 - 69ms/epoch - 5ms/step\n",
            "Epoch 227/300\n",
            "15/15 - 0s - loss: 0.0390 - 69ms/epoch - 5ms/step\n",
            "Epoch 228/300\n",
            "15/15 - 0s - loss: 0.0374 - 65ms/epoch - 4ms/step\n",
            "Epoch 229/300\n",
            "15/15 - 0s - loss: 0.0492 - 66ms/epoch - 4ms/step\n",
            "Epoch 230/300\n",
            "15/15 - 0s - loss: 0.0587 - 67ms/epoch - 4ms/step\n",
            "Epoch 231/300\n",
            "15/15 - 0s - loss: 0.0593 - 70ms/epoch - 5ms/step\n",
            "Epoch 232/300\n",
            "15/15 - 0s - loss: 0.0638 - 73ms/epoch - 5ms/step\n",
            "Epoch 233/300\n",
            "15/15 - 0s - loss: 0.0720 - 68ms/epoch - 5ms/step\n",
            "Epoch 234/300\n",
            "15/15 - 0s - loss: 0.0497 - 68ms/epoch - 5ms/step\n",
            "Epoch 235/300\n",
            "15/15 - 0s - loss: 0.0621 - 68ms/epoch - 5ms/step\n",
            "Epoch 236/300\n",
            "15/15 - 0s - loss: 0.0531 - 68ms/epoch - 5ms/step\n",
            "Epoch 237/300\n",
            "15/15 - 0s - loss: 0.0376 - 68ms/epoch - 5ms/step\n",
            "Epoch 238/300\n",
            "15/15 - 0s - loss: 0.0478 - 68ms/epoch - 5ms/step\n",
            "Epoch 239/300\n",
            "15/15 - 0s - loss: 0.0490 - 70ms/epoch - 5ms/step\n",
            "Epoch 240/300\n",
            "15/15 - 0s - loss: 0.0601 - 68ms/epoch - 5ms/step\n",
            "Epoch 241/300\n",
            "15/15 - 0s - loss: 0.0321 - 70ms/epoch - 5ms/step\n",
            "Epoch 242/300\n",
            "15/15 - 0s - loss: 0.0424 - 64ms/epoch - 4ms/step\n",
            "Epoch 243/300\n",
            "15/15 - 0s - loss: 0.0469 - 72ms/epoch - 5ms/step\n",
            "Epoch 244/300\n",
            "15/15 - 0s - loss: 0.0523 - 70ms/epoch - 5ms/step\n",
            "Epoch 245/300\n",
            "15/15 - 0s - loss: 0.0721 - 68ms/epoch - 5ms/step\n",
            "Epoch 246/300\n",
            "15/15 - 0s - loss: 0.0893 - 68ms/epoch - 5ms/step\n",
            "Epoch 247/300\n",
            "15/15 - 0s - loss: 0.0817 - 71ms/epoch - 5ms/step\n",
            "Epoch 248/300\n",
            "15/15 - 0s - loss: 0.0624 - 71ms/epoch - 5ms/step\n",
            "Epoch 249/300\n",
            "15/15 - 0s - loss: 0.0544 - 65ms/epoch - 4ms/step\n",
            "Epoch 250/300\n",
            "15/15 - 0s - loss: 0.0659 - 70ms/epoch - 5ms/step\n",
            "Epoch 251/300\n",
            "15/15 - 0s - loss: 0.0738 - 70ms/epoch - 5ms/step\n",
            "Epoch 252/300\n",
            "15/15 - 0s - loss: 0.0625 - 70ms/epoch - 5ms/step\n",
            "Epoch 253/300\n",
            "15/15 - 0s - loss: 0.0466 - 72ms/epoch - 5ms/step\n",
            "Epoch 254/300\n",
            "15/15 - 0s - loss: 0.0351 - 70ms/epoch - 5ms/step\n",
            "Epoch 255/300\n",
            "15/15 - 0s - loss: 0.0365 - 72ms/epoch - 5ms/step\n",
            "Epoch 256/300\n",
            "15/15 - 0s - loss: 0.0650 - 70ms/epoch - 5ms/step\n",
            "Epoch 257/300\n",
            "15/15 - 0s - loss: 0.0440 - 71ms/epoch - 5ms/step\n",
            "Epoch 258/300\n",
            "15/15 - 0s - loss: 0.0395 - 69ms/epoch - 5ms/step\n",
            "Epoch 259/300\n",
            "15/15 - 0s - loss: 0.0415 - 68ms/epoch - 5ms/step\n",
            "Epoch 260/300\n",
            "15/15 - 0s - loss: 0.0712 - 65ms/epoch - 4ms/step\n",
            "Epoch 261/300\n",
            "15/15 - 0s - loss: 0.0583 - 71ms/epoch - 5ms/step\n",
            "Epoch 262/300\n",
            "15/15 - 0s - loss: 0.0580 - 70ms/epoch - 5ms/step\n",
            "Epoch 263/300\n",
            "15/15 - 0s - loss: 0.0617 - 70ms/epoch - 5ms/step\n",
            "Epoch 264/300\n",
            "15/15 - 0s - loss: 0.0634 - 68ms/epoch - 5ms/step\n",
            "Epoch 265/300\n",
            "15/15 - 0s - loss: 0.0422 - 69ms/epoch - 5ms/step\n",
            "Epoch 266/300\n",
            "15/15 - 0s - loss: 0.0476 - 69ms/epoch - 5ms/step\n",
            "Epoch 267/300\n",
            "15/15 - 0s - loss: 0.0384 - 69ms/epoch - 5ms/step\n",
            "Epoch 268/300\n",
            "15/15 - 0s - loss: 0.0425 - 71ms/epoch - 5ms/step\n",
            "Epoch 269/300\n",
            "15/15 - 0s - loss: 0.0583 - 70ms/epoch - 5ms/step\n",
            "Epoch 270/300\n",
            "15/15 - 0s - loss: 0.0478 - 69ms/epoch - 5ms/step\n",
            "Epoch 271/300\n",
            "15/15 - 0s - loss: 0.0487 - 69ms/epoch - 5ms/step\n",
            "Epoch 272/300\n",
            "15/15 - 0s - loss: 0.0552 - 69ms/epoch - 5ms/step\n",
            "Epoch 273/300\n",
            "15/15 - 0s - loss: 0.0478 - 68ms/epoch - 5ms/step\n",
            "Epoch 274/300\n",
            "15/15 - 0s - loss: 0.0600 - 71ms/epoch - 5ms/step\n",
            "Epoch 275/300\n",
            "15/15 - 0s - loss: 0.0524 - 70ms/epoch - 5ms/step\n",
            "Epoch 276/300\n",
            "15/15 - 0s - loss: 0.0346 - 70ms/epoch - 5ms/step\n",
            "Epoch 277/300\n",
            "15/15 - 0s - loss: 0.0370 - 69ms/epoch - 5ms/step\n",
            "Epoch 278/300\n",
            "15/15 - 0s - loss: 0.0465 - 69ms/epoch - 5ms/step\n",
            "Epoch 279/300\n",
            "15/15 - 0s - loss: 0.0631 - 67ms/epoch - 4ms/step\n",
            "Epoch 280/300\n",
            "15/15 - 0s - loss: 0.0455 - 67ms/epoch - 4ms/step\n",
            "Epoch 281/300\n",
            "15/15 - 0s - loss: 0.0423 - 68ms/epoch - 5ms/step\n",
            "Epoch 282/300\n",
            "15/15 - 0s - loss: 0.0408 - 68ms/epoch - 5ms/step\n",
            "Epoch 283/300\n",
            "15/15 - 0s - loss: 0.0415 - 66ms/epoch - 4ms/step\n",
            "Epoch 284/300\n",
            "15/15 - 0s - loss: 0.0371 - 64ms/epoch - 4ms/step\n",
            "Epoch 285/300\n",
            "15/15 - 0s - loss: 0.0382 - 67ms/epoch - 4ms/step\n",
            "Epoch 286/300\n",
            "15/15 - 0s - loss: 0.0550 - 69ms/epoch - 5ms/step\n",
            "Epoch 287/300\n",
            "15/15 - 0s - loss: 0.0575 - 66ms/epoch - 4ms/step\n",
            "Epoch 288/300\n",
            "15/15 - 0s - loss: 0.0548 - 71ms/epoch - 5ms/step\n",
            "Epoch 289/300\n",
            "15/15 - 0s - loss: 0.0507 - 69ms/epoch - 5ms/step\n",
            "Epoch 290/300\n",
            "15/15 - 0s - loss: 0.0474 - 70ms/epoch - 5ms/step\n",
            "Epoch 291/300\n",
            "15/15 - 0s - loss: 0.0499 - 71ms/epoch - 5ms/step\n",
            "Epoch 292/300\n",
            "15/15 - 0s - loss: 0.0528 - 75ms/epoch - 5ms/step\n",
            "Epoch 293/300\n",
            "15/15 - 0s - loss: 0.0462 - 70ms/epoch - 5ms/step\n",
            "Epoch 294/300\n",
            "15/15 - 0s - loss: 0.0532 - 68ms/epoch - 5ms/step\n",
            "Epoch 295/300\n",
            "15/15 - 0s - loss: 0.0529 - 71ms/epoch - 5ms/step\n",
            "Epoch 296/300\n",
            "15/15 - 0s - loss: 0.0646 - 68ms/epoch - 5ms/step\n",
            "Epoch 297/300\n",
            "15/15 - 0s - loss: 0.0398 - 67ms/epoch - 4ms/step\n",
            "Epoch 298/300\n",
            "15/15 - 0s - loss: 0.0445 - 69ms/epoch - 5ms/step\n",
            "Epoch 299/300\n",
            "15/15 - 0s - loss: 0.0397 - 67ms/epoch - 4ms/step\n",
            "Epoch 300/300\n",
            "15/15 - 0s - loss: 0.0381 - 69ms/epoch - 5ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x78669c7afa90>"
            ]
          },
          "metadata": {},
          "execution_count": 62
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "35ff941e-3861-4e44-c753-c35538c6e43f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 443
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "7/7 [==============================] - 0s 4ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x78669c7ad900>"
            ]
          },
          "metadata": {},
          "execution_count": 63
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "s_ukr55OORqE",
        "outputId": "fe4e96ad-42c8-4eba-f747-904eca699a77"
      },
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712718105.4097424\n",
            "Wed Apr 10 03:01:45 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "o8HTyvcHchzQ",
        "outputId": "454ec8ab-3c12-4ee9-bd55-570897590223"
      },
      "execution_count": 65,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712718105.4163158\n",
            "Wed Apr 10 03:01:45 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Function to compute saliency map\n",
        "@tf.function\n",
        "def compute_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Function to compute saliency map using Gradient\n",
        "@tf.function\n",
        "def compute_gradient_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Compute saliency map for the entire grid\n",
        "def compute_saliency_map_grid():\n",
        "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
        "    input_image = np.c_[xx.ravel(), yy.ravel()]\n",
        "    saliency_map = compute_saliency(tf.constant(input_image, dtype=tf.float32)).numpy()\n",
        "    saliency_map = saliency_map.reshape(xx.shape)\n",
        "    return xx, yy, saliency_map\n",
        "\n",
        "# Compute and plot saliency map for the entire grid\n",
        "xx, yy, saliency_map = compute_saliency_map_grid()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "def compute_saliency_maps():\n",
        "    saliency_maps = []\n",
        "    for data_point in X:\n",
        "        saliency_map = compute_gradient_saliency(tf.constant(data_point[None, :], dtype=tf.float32)).numpy()\n",
        "        saliency_maps.append(saliency_map)\n",
        "    return saliency_maps\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "def find_top_indices(saliency_maps, top_k):\n",
        "    top_indices = np.argsort(np.max(saliency_maps, axis=1))[-top_k:]\n",
        "    return top_indices\n",
        "\n",
        "def plot_most_diagnostic(top_indices, top_k, normalized_saliency_values):\n",
        "    plt.figure(figsize=(8, 6))\n",
        "    plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)\n",
        "    plt.scatter(X[top_indices, 0], X[top_indices, 1], marker='o', s=200, facecolors='none', edgecolors='r', linewidths=2)\n",
        "    for i, index in enumerate(top_indices):\n",
        "        plt.annotate(f'{normalized_saliency_values.iloc[index][\"Saliency\"]:.4f}', (X[index, 0], X[index, 1]), xytext=(X[index, 0]+0.35, X[index, 1]+0.25), arrowprops=dict(facecolor='black', arrowstyle='->'))\n",
        "    plt.title(f'Saliency Most Diagnostic Data Points (Top {top_k})')\n",
        "    plt.xlabel('Feature 1')\n",
        "    plt.ylabel('Feature 2')\n",
        "    plt.grid(True)\n",
        "    plt.axis('equal')\n",
        "    plt.show()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "saliency_maps = compute_saliency_maps()\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "top_k = 5  # Number of top diagnostic data points to select\n",
        "top_indices = find_top_indices(saliency_maps, top_k)\n",
        "\n",
        "# Create a DataFrame to store the saliency values\n",
        "saliency_df = pd.DataFrame(data=saliency_maps, columns=[\"Saliency\"])\n",
        "\n",
        "# Save the saliency values to a CSV file\n",
        "saliency_df.to_csv(\"saliency_values.csv\", index=False)\n",
        "\n",
        "print(\"Saliency values saved to saliency_values.csv\")\n",
        "\n",
        "# Normalizing the saliency values\n",
        "normalized_saliency = (saliency_df - saliency_df.min()) / (saliency_df.max() - saliency_df.min())\n",
        "\n",
        "# Saving the normalized saliency values to a new CSV file\n",
        "normalized_saliency.to_csv(\"normalized_saliency_values.csv\", index=False)\n",
        "\n",
        "# Plot the most diagnostic data points\n",
        "plot_most_diagnostic(top_indices, top_k, normalized_saliency)\n",
        "\n",
        "print(\"Normalized saliency values saved to normalized_saliency_values.csv\")\n",
        "print(\"Normalized Saliency Top-k:\")\n",
        "print(normalized_saliency.nlargest(top_k, 'Saliency'))\n",
        "print(\"Normalized Saliency Max:\", normalized_saliency.max())\n",
        "print(\"Normalized Saliency Min:\", normalized_saliency.min())\n",
        "print(\"Normalized Saliency Mean:\", normalized_saliency.mean())\n",
        "print(\"Normalized Saliency Median:\", normalized_saliency.median())\n",
        "print(\"Normalized Saliency Mode:\", normalized_saliency.mode())\n",
        "sum_normalized_values = normalized_saliency.sum()\n",
        "print(\"Normalized Saliency Sum:\", sum_normalized_values)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"Normalized Saliency Standard Deviation:\", normalized_saliency.std())\n",
        "print(\"Normalized Saliency Skewness:\", normalized_saliency.skew())\n",
        "print(\"Normalized Saliency Kurtosis:\", normalized_saliency.kurtosis())\n",
        "print(\"Normalized Saliency Variance:\", normalized_saliency.var())\n",
        "coefficient_variation = (normalized_saliency.std() / normalized_saliency.mean()) * 100\n",
        "print(\"Normalized Saliency Coefficient of Variation:\", coefficient_variation)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "cumulative_sum = normalized_saliency.cumsum()\n",
        "print(\"Cumulative Sum of Normalized Saliency Values:\", cumulative_sum)\n",
        "mean_cumulative_sum = cumulative_sum / len(normalized_saliency)\n",
        "print(\"Mean of Cumulative Sum of Normalized Saliency Values:\", mean_cumulative_sum)\n",
        "rms = np.sqrt(np.mean(normalized_saliency**2))\n",
        "print(\"Normalized Saliency Root Mean Square:\", rms)\n",
        "q1 = normalized_saliency.quantile(0.25)\n",
        "q2 = normalized_saliency.quantile(0.75)\n",
        "iqr = q2 - q1\n",
        "print(\"Normalized Saliency 25th Percentile:\", q1)\n",
        "print(\"Normalized Saliency 75th Percentile:\", q2)\n",
        "print(\"Normalized Saliency Interquartile Range:\", iqr)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1996
        },
        "id": "95xed6YyDClf",
        "outputId": "939c5927-9fcd-407c-b2f1-ddaffd767784"
      },
      "execution_count": 66,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Saliency values saved to saliency_values.csv\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ],
            "image/png": "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7NnDjBkzuP/++/nxxx9LjaNdvHgxV199NWlpaUybNo2XXnqJHj16sHr1agDuvPNOrFYry5cvL7FdYWEh33zzDTfddBMeHh5OY7/sssto1qyZI6EGWL58Od7e3lx99dWl2ufl5TF48GCWLl3K2LFjefnll/Hz82P8+PGOpBZgzZo1jB49moCAAObNm8dLL73E4MGD2bRpk+NxH3roIQCeeeYZli5dytKlS+nYsaPTmMtz5513AjhN5t544w169uzJCy+8wIsvvoibmxu33HILP//8c4l248eP56233mLkyJHMmzcPk8lU5mtS7NZbbyU7O5u5c+dy6623snjxYsdwhGITJ05k+vTpXHTRRbz++usMGjSIuXPncvvttzvaJCUlMWzYME6ePMnTTz/NW2+9xdixY/n7778BCAkJcXxJu+GGGxyv3Y033lhubLNmzeLOO+/EYDDwwgsvMGvWLCIjI1m3bl2Fr5UzZb3mX3/9NWazmfvvv5+33nqL4cOH89Zbb3HXXXc52tx3330MHToUwBH/0qVLHfdrPUaVcfz4cQCCgoI0/x1XxNnxXrp0KUajkYEDBzqe33333QfApEmTWLRoETfddBPvvPMOjz/+OCaTiYMHD1b4mJs3bwbgoosuqtRzX7x4Mbfeeit6vZ65c+dyzz33sGLFCgYMGEBGRkaJtjabjREjRtCkSRPmz59Pr169mDFjBjNmzND0WGazGV9fX/z8/AgMDGTy5Mnk5OSU2bZXr16O5yREuWq7y1mIuuq3335T9Xq9qtfr1b59+6pPPvmk+uuvv6qFhYWl2prN5lK3DR8+XG3dunWJ284f6hAdHV3qMuKVV16pdu3aVc3Pz3fcZrfb1X79+qlt27Z13PbJJ5+ogDpkyBDVbrc7bn/00UdVvV6vZmRkqKqqqhkZGaqPj496ySWXqHl5eSXiOXe7vn37lrrMvGLFCk3DB869hP3444+rUVFRjvt69+6tTpgwQVVVtdRQhwULFqiA+tlnnzluKywsVPv27at6e3urWVlZqqqq6sMPP6z6+vqqVqu13Biqc6iDqqpqenq6Cqg33HCD47Zx48apLVq0KNHu/GNfWFiodunSRb3iiisct+3cuVMF1EceeaRE2/Hjx5caYlAc1913312i7Q033KAGBQU5ft+9e7cKqBMnTizR7vHHH1cBdd26daqqqurKlStVQN2+fXs5r0TFQx2K4yl29OhRVafTqTfccINqs9lKtD3376ksVXnNy3pvzZ07V1UURT116pTjtoqGOmg5RuUpvtyenJysJicnq8eOHVNffPFFVVEUtVu3bqqqav87VlW1ysdbVcsf6uDn51elIUTPPfecCqjZ2dnltjl/qENhYaEaGhqqdunSpcTnyU8//aQC6vTp0x23jRs3TgXUBx980HGb3W5Xr776atXd3b3cv4NiTz/9tPrUU0+py5cvV7/44gvH/vr3769aLJZS7V988UUVqPJQNNE4SI+vEOUYOnQoW7Zs4brrrmPPnj3Mnz+f4cOHExERUWrYgclkcvw/MzOTlJQUBg0axIkTJ8jMzNT8mGlpaaxbt87R+5OSkkJKSgqpqakMHz6co0ePlrqceO+995a4rDtw4EBsNhunTp0CinpLs7Ozefrpp0v12p673V133cXWrVsdPVkAn3/+OZGRkQwaNEjzcxgzZgzHjh1j+/btjn/LG+awatUqwsLCHBNrAAwGAw899BA5OTls3LgRAH9/f3Jzc0tcAnc1b29voOgyckXOPfbp6elkZmYycODAEpeZi3vWH3jggRLbVjRBctKkSSV+HzhwIKmpqY5LvqtWrQJg6tSpJdo99thjAI7ezOKhOj/99BMWi6XC56LFd999h91uZ/r06eh0JU8hF7rsWVmv+bmvb25uLikpKfTr1w9VVfnnn3807VfLMapIbm4uISEhhISEEBUVxTPPPEPfvn0dV2C0/h1XxNnxroi/vz9bt27lzJkzmp5PsdTUVNzc3ByvuxY7duwgKSmJBx54oMTnydVXX02HDh3K7EU/9wpU8couhYWF/P777xU+1ty5c3nppZe49dZbuf3221m8eDFz5sxh06ZNZQ5VCQgIACAlJUXz8xGNjyS+QlSgd+/erFixgvT0dLZt28a0adPIzs7m5ptv5sCBA452mzZtYsiQIXh5eeHv709ISAjPPPMMQKUS32PHjqGqKs8//7zjRFv8U3xpMCkpqcQ2zZs3L/F78Yd/eno68N8l2S5dulT42LfddhtGo5HPP//cEfdPP/3E2LFjK5XQ9OzZkw4dOrBs2TI+//xzwsLCuOKKK8pse+rUKdq2bVsqgSoeolCcvD/wwAO0a9eOq666imbNmnH33Xc7kklXKb6c6myG+E8//cSll16Kh4cHgYGBjqED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jC6E1r/jC9WrVy9+//13XnvtNcLDw2nVqhXt27enWbNm3HzzzXTv3h1vb29+//13tm/fzquvvlrh/lq3bk2XLl34/fffHes6O2MwGJg3bx4TJkxg0KBBjB49msTERN544w1atmzpGOJVzMPDg9WrVzNu3DguueQSfvnlF37++WeeeeaZCntmExIS6NmzJ6NHj3b0TP/666+sWrWKESNGcP3115don5SUxN69e5k8ebKm5yEasRpfR0KIeuKXX35R7777brVDhw6qt7e36u7urkZFRakPPvhgqeVyfvjhB7Vbt26qh4eH2rJlS3XevHnqxx9/rAJqdHS0o52W5cxUVVWPHz+u3nXXXWpYWJhqMBjUiIgI9ZprrlG/+eYbR5vi5czOX6Zq/fr1ZS7r9cMPP6j9+vVTTSaT6uvrq/bp00f94osvSj3vbdu2qYA6bNgwza+Vs2WqilFG5bbExER1woQJanBwsOru7q527dq11OvxzTffqMOGDVNDQ0NVd3d3tXnz5up9992nxsfHl2j3wQcfqK1bt1b1er3Tpc2KYy7+8fDwUJs1a6Zec8016scff1xiObliZS1n9tFHH6lt27ZVjUaj2qFDB/WTTz4ptQSYqqpqbm6uOnnyZDUwMFD19vZWR40apR4+fFgF1JdeeqlUXOe/lsXH+9y/J4vFos6aNUtt1aqVajAY1MjISHXatGklYt+1a5c6evRotXnz5qrRaFRDQ0PVa665Rt2xY0eJ/W/evFnt1auX6u7uXmLJrbKei6qq6scff6z27NlTNRqNakBAgDpo0CB1zZo15b7eVX3NDxw4oA4ZMkT19vZWg4OD1XvuuUfds2dPqfeN1WpVH3zwQTUkJERVFKVEzFqPUVm0Vg/T8nesquUvZ6bleB86dEi97LLLVJPJpALquHHj1IKCAvWJJ55Qu3fvrvr4+KheXl5q9+7d1XfeecdpzKqqqq+99prq7e1d5rJxqlp+5bbly5c7jn9gYKA6duxY9fTp0yXaFL92x48fV4cNG6Z6enqqTZo0UWfMmFFqKbzzpaenq3fccYcaFRWlenp6qkajUe3cubP64osvlrmk5KJFi1RPT88SS8cJURZFVS9wBoYQokHZs2cPPXr04NNPP3UUFBCusXv3bnr27Mlnn33G2LFjazsc0QhlZmbSunVr5s+fz//93/9V677Hjx/PN998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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Normalized saliency values saved to normalized_saliency_values.csv\n",
            "Normalized Saliency Top-k:\n",
            "     Saliency\n",
            "198  1.000000\n",
            "80   0.935880\n",
            "41   0.922124\n",
            "340  0.895139\n",
            "161  0.783107\n",
            "Normalized Saliency Max: Saliency    1.0\n",
            "dtype: float32\n",
            "Normalized Saliency Min: Saliency    0.0\n",
            "dtype: float32\n",
            "Normalized Saliency Mean: Saliency    0.040866\n",
            "dtype: float32\n",
            "Normalized Saliency Median: Saliency    0.001647\n",
            "dtype: float32\n",
            "Normalized Saliency Mode:    Saliency\n",
            "0  0.000714\n",
            "1  0.000931\n",
            "2  0.001079\n",
            "3  0.001101\n",
            "4  0.001116\n",
            "5  0.001127\n",
            "6  0.001134\n",
            "7  0.001204\n",
            "8  0.015215\n",
            "Normalized Saliency Sum: Saliency    19.61566\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Normalized Saliency Standard Deviation: Saliency    0.140394\n",
            "dtype: float32\n",
            "Normalized Saliency Skewness: Saliency    4.349947\n",
            "dtype: float32\n",
            "Normalized Saliency Kurtosis: Saliency    19.790394\n",
            "dtype: float32\n",
            "Normalized Saliency Variance: Saliency    0.01971\n",
            "dtype: float32\n",
            "Normalized Saliency Coefficient of Variation: Saliency    343.546997\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Cumulative Sum of Normalized Saliency Values:       Saliency\n",
            "0     0.000931\n",
            "1     0.001857\n",
            "2     0.002820\n",
            "3     0.003757\n",
            "4     0.004672\n",
            "..         ...\n",
            "475  19.571594\n",
            "476  19.579927\n",
            "477  19.590391\n",
            "478  19.600449\n",
            "479  19.615664\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Mean of Cumulative Sum of Normalized Saliency Values:      Saliency\n",
            "0    0.000002\n",
            "1    0.000004\n",
            "2    0.000006\n",
            "3    0.000008\n",
            "4    0.000010\n",
            "..        ...\n",
            "475  0.040774\n",
            "476  0.040792\n",
            "477  0.040813\n",
            "478  0.040834\n",
            "479  0.040866\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Normalized Saliency Root Mean Square: 0.14608003\n",
            "Normalized Saliency 25th Percentile: Saliency    0.000955\n",
            "Name: 0.25, dtype: float64\n",
            "Normalized Saliency 75th Percentile: Saliency    0.006578\n",
            "Name: 0.75, dtype: float64\n",
            "Normalized Saliency Interquartile Range: Saliency    0.005623\n",
            "dtype: float64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "9dda3501-63e9-48f1-b133-7e3fe4313f52"
      },
      "execution_count": 67,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712718106.8118095\n",
            "Wed Apr 10 03:01:46 2024\n"
          ]
        }
      ]
    }
  ]
}